package com.zenithmind.task.pojo.vo;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 任务模板VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
public class TaskTemplateVO {

    /**
     * 模板ID
     */
    private String id;

    /**
     * 模板名称
     */
    private String templateName;

    /**
     * 模板描述
     */
    private String description;

    /**
     * 模板分类ID
     */
    private String categoryId;

    /**
     * 模板分类名称
     */
    private String categoryName;

    /**
     * 模板类型：1-个人模板，2-团队模板，3-系统模板
     */
    private Integer templateType;

    /**
     * 模板类型文本
     */
    private String templateTypeText;

    /**
     * 创建者ID
     */
    private String creatorId;

    /**
     * 创建者名称
     */
    private String creatorName;

    /**
     * 创建者头像
     */
    private String creatorAvatar;

    /**
     * 模板内容（JSON格式）
     */
    private String templateContent;

    /**
     * 模板配置（JSON格式）
     */
    private String templateConfig;

    /**
     * 模板标签
     */
    private String tags;

    /**
     * 标签列表
     */
    private List<String> tagList;

    /**
     * 使用次数
     */
    private Integer usageCount;

    /**
     * 是否公共：1-公共，0-私有
     */
    private Integer isPublic;

    /**
     * 可见性文本
     */
    private String visibilityText;

    /**
     * 排序权重
     */
    private Integer sortOrder;

    /**
     * 模板状态：1-有效，0-无效
     */
    private Integer status;

    /**
     * 状态文本
     */
    private String statusText;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 是否热门模板
     */
    private Boolean isPopular;

    /**
     * 是否当前用户创建
     */
    private Boolean isCreatedByCurrentUser;

    /**
     * 是否可编辑
     */
    private Boolean canEdit;

    /**
     * 是否可删除
     */
    private Boolean canDelete;

    /**
     * 模板预览图
     */
    private String previewImage;

    /**
     * 最近使用时间
     */
    private LocalDateTime lastUsedTime;
}
